iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
0
Software Development

【錢不夠買ps的我,只好用OpenCV來修圖了!】系列 第 12

【沒錢ps,我用OpenCV!】Day 12 - 基本修圖4,運用 OpenCV 畫線、畫矩形、畫橢圓 draw lines, draw rectangle, draw ellipse

  • 分享至 

  • xImage
  •  

先來看看今天的結果圖

https://ithelp.ithome.com.tw/upload/images/20200924/20120424mcQ2DnCh1v.png

-> 此篇文章的程式碼 github

Day12_畫線畫矩形畫橢圓_lines_rectangle_ellipse.ipynb

前言

完成下一份我們的大作前,我們先來補充一些基本技能吧!
畢竟基本技能才是最經常被我們使用的呢!

運用 OpenCV 畫線、畫矩形、畫橢圓

運用 OpenCV 畫線

def draw_lines(img):
    start_point = (20, 20)
    end_point = (120, 120)
    color = (0, 255, 0) # green
    thickness = 3 # 寬度
    cv2.line(img, start_point, end_point, color, thickness) 
      
    return img

重點在 cv2.line 那一行,
其他都是在設定相關的參數~ 可以依照需求變動。

cv2.line(img, start_point, end_point, color, thickness)

  • img 原圖片
  • start_point 線條起點
  • end_point 線條終點
  • color 線條顏色
  • thickness 線條粗細

https://ithelp.ithome.com.tw/upload/images/20200924/20120424kiqDDabcfy.png

運用 OpenCV 畫矩形

def draw_rectangle(img):
    left_up = (20, 60)
    right_down =  (180, 120)
    color = (0, 0, 255) # red
    thickness = 2 # 寬度 (-1 表示填滿)
    cv2.rectangle(img, left_up, right_down, color, thickness) 
    
    cv2.rectangle(img, (125, 20), (175, 40), (255, 0, 255), -1) 

    return img

重點在 cv2.rectangle 那一行,
其他都是在設定相關的參數~ 可以依照需求變動。

cv2.rectangle(img, left_up, right_down, color, thickness)

  • img 原圖片
  • left_up 矩形左上角座標
  • right_down 矩形右下角座標
  • color 矩形顏色
  • thickness 矩形線條粗細 (-1 表示填滿)

比較特別的為 thickness = -1,具有填滿矩形的功能。

另外補充說明,「left_up 矩形左上角座標」 與 「right_down 矩形右下角座標」,
並非一定要是左上&右下只要能描述矩形四個端點即可

例如:也可以給左下&右上

https://ithelp.ithome.com.tw/upload/images/20200924/20120424uqvMWLPYqp.png

運用 OpenCV 畫橢圓

def draw_ellipse(img):
    center = (100, 100)  #圓心
    axes =  (25, 55) #橢圓的長半軸與短半軸的大小
    rotateAngle = 45 #橢圓的旋轉角度 (傾斜 +45度)
    startAngle = 0 #橢圓弧的起始角度
    endAngle = 360 #橢圓弧的終止角度 (180 表示只畫一半)
    color = (255, 0, 0) # blue
    thickness = 2 # 寬度 (-1 表示填滿)
    
    cv2.ellipse(img, center, axes, rotateAngle, startAngle, endAngle, color, thickness)
    
    cv2.ellipse(img, (50, 50), (20, 30), -45, 0, 180, (0, 255, 255), -1)

    return img    

重點在 cv2.ellipse 那一行,
其他都是在設定相關的參數~ 可以依照需求變動。

cv2.ellipse(img, center, axes, rotateAngle, startAngle, endAngle, color, thickness)

  • img 原圖片
  • center 圓心
  • axes 橢圓的長半軸與短半軸的大小
  • rotateAngle 橢圓的旋轉角度 (傾斜角度)
  • startAngle 橢圓弧的起始角度
  • endAngle 橢圓弧的終止角度 (180 表示只畫一半)
  • color 橢圓的顏色
  • thickness 橢圓的線條粗細 (-1 表示填滿)

比較特別的為 thickness = -1,具有填滿橢圓的功能。

https://ithelp.ithome.com.tw/upload/images/20200924/20120424S0kU6NYIVq.png

Reference

https://docs.scipy.org/doc/numpy-1.13.0/reference/generated/numpy.full.html

https://blog.gtwang.org/programming/opencv-basic-image-read-and-write-tutorial/

https://blog.csdn.net/u011520181/article/details/83933325

https://blog.gtwang.org/programming/opencv-drawing-functions-tutorial/

https://blog.gtwang.org/tag/opencv/

https://www.geeksforgeeks.org/python-opencv-cv2-circle-method/


上一篇
【沒錢ps,我用OpenCV!】Day 11 - 基本修圖3,OpenCV 建立新空白圖、畫點、畫圓 create new pictures, draw points and draw circle
下一篇
【沒錢ps,我用OpenCV!】Day 13 - 基本修圖5,運用 OpenCV 在圖片上寫文字、查色碼、顯示色碼顏色 write text, get and show RGB Color Code
系列文
【錢不夠買ps的我,只好用OpenCV來修圖了!】30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言